﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Grupo2.Persistencia;
using Grupo2.Dominio;

namespace Grupo2.Pruebas
{
    [TestFixture]
    public class TestReferenciaPersonalDAO
    {
        [Test]
        public void TestCrearReferenciaPersonal()
        {
            
            //Creamos un objeto nuevoOfertante del tipo ReferenciaPersonal
            ReferenciaPersonal nuevoReferenciaPersonal = new ReferenciaPersonal();

            //Creamos un objeto anidado para Postulante
            //Postulante postulanteAnidado = new Postulante();

            //Asignamos valores a los atributos al objeto nuevoRefereciaPersonal
            nuevoReferenciaPersonal.Id_Referencia_Personal = 1;
            //nuevoReferenciaPersonal.Postulante = postulanteAnidado;
            nuevoReferenciaPersonal.Postulante.Id_Postulante = 1;
            nuevoReferenciaPersonal.Nombres = "Ytalo";
            nuevoReferenciaPersonal.Apellidos = "Maldonado";
            nuevoReferenciaPersonal.Empresa = "Compania Z";

            //En este objeto cargaremos los valores
            ReferenciaPersonalDAO ReferenciaPersonalDAO = new ReferenciaPersonalDAO();

            //Creamos un objeto ReferenciaPersonalCreado del tipo ReferenciaPersonal y mediante el método CrearReferenciaPersonal definido en
            //la clase ReferenciaPersonalDAO.cs hacemos luego que ReferenciaPersonalCreado reciba los datos del objeto ReferenciaPersonalDAO
            ReferenciaPersonal ReferenciaPersonalCreado = ReferenciaPersonalDAO.CrearReferenciaPersonal(nuevoReferenciaPersonal);

            //Con esto verificamos que se haya creado el registro en la BD
            Assert.NotNull(ReferenciaPersonalCreado);
        }

        [Test]
        public void TestObtenerReferenciaPersonal()
        {
            Int32 Id_Referencia_Personal_Buscado = 1;

            //Creamos un objeto del tipo ReferenciaPersonalDAO
            ReferenciaPersonalDAO referenciaPersonalDAO = new ReferenciaPersonalDAO();

            //Creamos un objeto ReferenciaPersonalExistente y le asignamos los datos obtenido con el método ObtenerReferenciaPersonal
            //que esta definido en la clase ReferenciaPersonalDAO.cs
            ReferenciaPersonal referenciaPersonalExistente = referenciaPersonalDAO.ObtenerReferenciaPersonal(Id_Referencia_Personal_Buscado);

            //Con esto verificamos sí hemos el ofertante buscado se ha encontrado
            Assert.AreEqual(Id_Referencia_Personal_Buscado, referenciaPersonalExistente.Id_Referencia_Personal);

            //Con esto verificamos que el campo Empresa no este vacio
            Assert.NotNull(referenciaPersonalExistente.Empresa);
        }

        [Test]
        public void ModificarReferenciaPersonal()
        {
            String Empresa_modificado = "COSAPI";
            ReferenciaPersonalDAO referenciaPersonalDAO = new ReferenciaPersonalDAO();

            ReferenciaPersonal referenciaPersonalExistente = referenciaPersonalDAO.ObtenerReferenciaPersonal(1);
            referenciaPersonalExistente.Empresa = Empresa_modificado;

            ReferenciaPersonal referenciaPersonalModificado = null;

            Assert.Catch<Exception>(delegate
            {
                referenciaPersonalModificado = referenciaPersonalDAO.CrearReferenciaPersonal(referenciaPersonalExistente);
            });

        }

        
        [Test]
        public void TestEliminarReferenciaPersonal()
        {
            Int32 Id_Referencia_Personal_A_Elminar = 1;

            ReferenciaPersonalDAO ReferenciaPersonalDAO = new ReferenciaPersonalDAO();

            ReferenciaPersonalDAO.EliminarReferenciaPersonal(Id_Referencia_Personal_A_Elminar);

            ReferenciaPersonal existe = ReferenciaPersonalDAO.ObtenerReferenciaPersonal(Id_Referencia_Personal_A_Elminar);

            Assert.IsNull(existe);
        }  
    }
}